Verifiable Range Analysis Annotations for Array Bounds Check Elimination
نویسندگان
چکیده
For performance reasons, it is desirable for Java just-in-time (JIT) compilers to statically identify array element accesses that can never cause an out of bounds exception, but the most precise analyses are too expensive to run in JIT compilers. We present verifiable annotations that can be added to Java programs to capture the results of range analyses as claimed linear inequalities and proofs of these claims. These proofs can be efficiently verified so that array bounds checks can be safely eliminated during JIT compilation without performing expensive range analyses at runtime.
منابع مشابه
A Verifiable, Control Flow Aware Constraint Analyzer for Bounds Check Elimination
The Java programming language requires that out-of-bounds array accesses produce runtime exceptions. In general, this requires a dynamic bounds check each time an array element is accessed. However, if it can be proven that the array index does not exceed the bounds of the array, then the bounds check can be eliminated. We present a new algorithm based on extended Static Single Assignment (eSSA...
متن کاملSubregion Analysis and Bounds Check Elimination for High Level Arrays
For decades, the design and implementation of arrays in programming languages has reflected a natural tension between productivity and performance. Recently introduced HPCS languages (Chapel, Fortress and X10) advocate the use of high-level arrays for improved productivity. For example, high-level arrays in the X10 language support rank-independent specification of multidimensional loop and arr...
متن کاملSafe bounds check annotations
The Java programming language’s semantics require that out-of-bounds array accesses be caught at runtime. In general, this requires dynamic checks at the time the array element is accessed. Some of these checks can be eliminated statically during just-in-time (JIT) compilation, but the most precise analyses are too expensive to run in JIT compilers. This paper presents a framework in which thor...
متن کاملArray bounds check elimination in the context of deoptimization
Whenever an array element is accessed, Java virtual machines execute a compare instruction to ensure that the index value is within the valid bounds. This reduces the execution speed of Java programs. Array bounds check elimination identifies situations in which such checks are redundant and can be removed. We present an array bounds check elimination algorithm for the Java HotSpot VM based on ...
متن کاملSafe, multiphase bounds check elimination in Java
As part of its type-safety regime, the Java semantics require precise exceptions at runtime when programs attempt out-of-bound array accesses. This paper describes a Java implementation that utilizes a multiphase approach to identifying safe array accesses. This approach reduces runtime overhead by spreading the out-of-bounds checking effort across three phases of compilation and execution: pro...
متن کامل